package com.gtw.builder;

/**
 * 主要作用:
 *      1.隔离客户和生产过程,避免高层模块深入到建造者内部的实现类
 *      2.负责控制产品的生产过程
 * 客户端只需要知道具体建造者的类型，即可通过指挥者类调用建造者的相关方法，返回一个完整的产品对象
 */
public class Director {
    private Builder builder = new ConcreteBuilder();

    public Product getProduct(){
        /**
         * 在director中控制了产品的展现
         */
        makeSequence();
        /**
         * 具体生成在Builder中
         */
        return builder.buildProduct();
    }

    private void makeSequence(){
        System.out.println("Director控制了产品的展现");
    }
}
